package tarea;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.ArrayList;
import java.util.List;


import org.apache.struts2.ServletActionContext;
import org.omg.CORBA.Environment;


@SuppressWarnings("unused")
public class manejoTareas {
	private List<tarea> lista;
	
	public manejoTareas(){}
	public manejoTareas(List<tarea> L){
		lista=L;
	}
	/*
	 * convertir archivo en lista
	 */
	@SuppressWarnings({ "unchecked", "rawtypes", "unused" })
	public List<tarea> generarLista() {
		String directorio = ServletActionContext.getServletContext().getRealPath("/Tareas.txt");
		tarea t=null;
		File archivo=null;
		try{
			archivo = new File(directorio);
			if (!archivo.exists())
			  archivo.createNewFile();
			lista = new ArrayList<tarea>();
			} catch (IOException e) {
		//	System.out.println ("ERRORRRRRR");
			e.printStackTrace();
		}
		
		FileInputStream fis = null; 
		ObjectInputStream in = null;
				
		try{

			fis = new FileInputStream(archivo);
			in = new ObjectInputStream(fis); 
			lista = (ArrayList) in.readObject();
			in.close();
		}catch (IOException ex) {
			ex.printStackTrace();
			System.out.println("Error de IO");
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		}
		
		return lista;
	}
		
	/*
	 * serializar las tareas y guardarlas en el archivo
	 */
	public void guardar(tarea t){
		lista=generarLista();
        lista.add(t);
        guardarLista(lista);
    }
		
   private void guardarLista (List<tarea> lista){
        String directorio = ServletActionContext.getServletContext().getRealPath("/Tareas.txt");
		File archivo=null;
		archivo = new File(directorio);
		if (!archivo.exists())
			try {
				archivo.createNewFile();
			} catch (IOException e) {
				e.printStackTrace();
			}
		FileOutputStream fos = null;
		ObjectOutputStream out = null;
		try {
			fos = new FileOutputStream(archivo);
			out = new ObjectOutputStream(fos);
			out.writeObject(lista);
			out.close();
		} catch (IOException ex) {
			ex.printStackTrace();
	//		System.out.println("Error");
		}
	}	
		
		
	public String eliminar(int indice){
		List<tarea> ele=generarLista();
		
		if(indice>=0){
			ele.remove(indice);
			guardarLista(ele);
			return "exito";
		}
		else{
			return "error";
		}
	}
		
	public void modificar(tarea tM){
			
			
	}
		
	public List<tarea> getTareas(){
		return lista;
	}			
		
	public void setTareas( List<tarea> t){
		lista=t;
	}
		
	
}
	
	
	


